話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した #devio2022
ウィスキー、シガー、パイプをこよなく愛する大栗です。
この度クラスメソッド株式会社で開催している技術イベント DevelopersIO 2022 のアーカイブ動画セッションに登壇しましたので、ブログで解説を行いたいと思います。なお本内容は2022年6月時点の内容となっていますので、現在の状況とは異なっている場合がございますのでご了承ください。
AlloyDB for PostgreSQL は2022年7月27日現在において、プレビューのステータスです。このプロダクトまたは機能は、Google Cloud Platform の利用規約の一般提供前のサービス規約の対象となります。一般提供前のプロダクトと機能では、サポートが制限されることがあります。また、一般提供前のプロダクトや機能に変更が加えられると、他の一般提供前バージョンと互換性がない場合があります。詳細については、リリースステージの説明をご覧ください。
話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した
動画
スライド
Google Cloud のマネージドデータベース
Google Cloud ではトランザクションデータを扱うデータベースサービスが多数あります。
- インメモリ
- Memorystore
- リレーショナル
- Cloud SQL
- Cloud Spanner
- ドキュメント
- Cloud Firestore
- ワイドカラム
- Cloud Bigtable
特に RDBMS では、OSS が主体の Cloud SQL と New SQL である Cloud Spanner となりますが、ユーザーが OSS DB のエコシステムとともに商用グレードのパフォーマンスや機能性を求めています。
そこで Cloud SQL と Cloud Spanner の間に AlloyDB for PostgreSQL が PostgreSQL と互換性を持つフルマネージド型のエンタープライズワークロードのためのデータベースサービスが発表されました。
AlloyDB の全体概要
全体は Cluster という管理単位があり、その中に読み書きを行う Primary Instance とフェイルオーバー先の Failover Replica、読み取り専用の Read Pool を配置します。
標準的な PostgreSQL と比較して 4 倍、競合の類似サービスと比較して 2 倍のトランザクションを処理し、標準的な PostgreSQL と比較して分析クエリが最大 100 倍高速という優れたパフォーマンスを発揮すると Google Cloud は主張しています。その優れたパフォーマンスを発揮する要因として、公開されている情報としてインテリジェントなストレージとカラム型エンジンが有ると考えています。
インテリジェントなストレージ
WAL 書き込みだけで済み Dirty Page の書き込みが不要となるためストレージのアクセスが減り高速化する要因と考えられます。
カラム型エンジン
通常の行型のデータを、機械学習によりワークロードに応じて適切な列やテーブルを分析クエリ向けのカラム型データに変換してとしてオンメモリで保持します。
OLTP と OLAP の両方のワークロードをサポートするハイブリッドトランザクション/分析処理(HTAP)は様々な実装が出てきています。
実際に負荷をかけてパフォーマンスの傾向を確認
Google Cloud の利用規約のため、具体的な数値結果を公表できませんが、OLTP や OLAP で良好なパフォーマンスを発揮します。TPC-C ライクなベンチマークや TPC-H ライクなベンチマークを実施して結果の傾向を確認しました。
トランザクションワークロードでは Google Cloud の主張通りのパフォーマンスを発揮することが確認できましたが、高負荷時にスループット落ち込みやジッタの増加が見られました。現在はプレビューのため、一般提供までに高負荷時のパフォーマンス改善を期待します。
分析ワークロードでは Google Cloud の主張の前提である標準的な PostgreSQL との比較ではなく、AlloyDB のカラム型エンジンを無効にした状態と比較しています。そのため『最大 100 倍高速』という主張と比較の前提が異なります。分析クエリの内容によって高速化される割合は異なりますが、実際に試したクエリの中では最大 27.5 倍高速になったクエリを確認し、それ以外は概ね120 〜 240 % の高速な結果となりました。
カラム型エンジンを使用する箇所はクエリの実行計画で Parallel Custom Scan (columnar scan)
となっており、多数のデータをスキャンする処理になっています。
AlloyDB は Query Insights に対応しているのでクエリプランを直感的に把握でき、カラム型エンジンが使用された処理も確認できます。
まとめ
- AlloyDB は PostgreSQL と互換性を持つフルマネージド型のエンタープライズワークロードに対応するデータベースサービス
- インテリジェントなストレージで高速化と高可用性
- 内容次第だがカラム型エンジンで分析クエリを高速に
- 現在プレビューなので GA までにアップデートを期待
- プレビュー中は無料で利用できるため自分のワークロードに合うか検証を気軽に行える
さいごに
ベンチマークを実施してみましたが、想像を超えるほどに高速に動作しました。Google Cloud で新規に RDBMS を使うのであれば、DB エンジンに特別な要件がない限り AlloyDB か Cloud Spanner の二択で良いのではないかと思うほどでした。
AlloyDB は現在プレビュー中で、$15,000(日本円で約 200 万円) 分まで無料で利用できるという太っ腹な状況です。みなさんも是非ご自身のワークロードに合うかを検証して、Google Cloud へフィードバックしていきましょう。